SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO

  
  
CREATE PROC [dbo].[SP_TXMVTO_CNTB_I11]  
/*---------------------------------------------------------------------*/            
/*----- Empresa          : OFISIS S.A.                            -----*/            
/*----- Cliente          : OFISIS S.A.                            -----*/            
/*----- Sistema          : Contabilidad                           -----*/            
/*----- Modulo           : Administracion                         -----*/            
/*----- Programa         : Apertura Anual                         -----*/            
/*----- Nombre           : SP_TXMVTO_CNTB_I11                   -----*/            
/*----- Script           : TXMVTO_CNTB                            -----*/            
/*----- Desarrollado     : Franco Gamboni Koifman                 -----*/            
/*----- Fecha            : 11/11/1996                             -----*/            
/*----- Base de Datos    : MS SQL Server                          -----*/            
/*----- Version BD       : 6.5                                    -----*/            
/*----- Invoca a SP      : SP_TXMVTO_CNTB_I12                     -----*/            
/*---------------------------------------------------------------------*/            
/*---------------------------------------------------------------------*/            
/*----- Modificado 1 por : percy garcia                           -----*/            
/*----- Fecha Modifica   : 05/06/2004                             -----*/            
/*----- Detalle Modifica : usuario creacion y modif               -----*/            
/*---------------------------------------------------------------------*/            
/*---------------------------------------------------------------------*/            
/*----- Modificado 2 por : LMGP                                   -----*/            
/*----- Fecha Modifica   : 10/11/2004                             -----*/            
/*----- Detalle Modifica : Nuevo parametro @IDFE_ASTO_CNTB        -----*/            
/*---------------------------------------------------------------------*/            
/*---------------------------------------------------------------------*/            
/*----- Modificado 3 por : PDGV                                   -----*/            
/*----- Fecha Modifica   : 20/01/2005                             -----*/            
/*----- Detalle Modifica : APERTURA POR UNIDAD                    -----*/            
/*---------------------------------------------------------------------*/            
/*---------------------------------------------------------------------*/            
/*----- Comentarios      : Todas las cuentas menores que la 59    -----*/            
/*-----                    que no tengan Auxiliar                 -----*/            
/*---------------------------------------------------------------------*/            
/*---------------------------------------------------------------------*/            
/*----- Drop Proc SP_TXMVTO_CNTB_I11                              -----*/            
/*----- Grant all On SP_TXMVTO_CNTB_I11 To PUBLIC             -----*/            
/*----- exec SP_TXMVTO_CNTB_I11 '01', 1, 2002, 13, 2003, 0, '001', '000', '0000000001', 'LUZ', 5 -----*/            
/*---------------------------------------------------------------------*/            
@ISCO_EMPR       TD_VC_002,            
@ISCO_USUA          TD_VC_008,  
@IDFE_USUA          TD_DT_001,  
@INNU_CNTB_EMPR  TD_IN_001,            
@INNU_ANNO_CIER  TD_IN_004_ANNO,            
@INNU_MESE_CIER  TD_IN_002_MESE,            
@INNU_ANNO_APER  TD_IN_004_ANNO,            
@INNU_MESE_APER  TD_IN_002_MESE,            
@ISCO_UNID_CNTB  TD_VC_003,            
@ISCO_UNID_FILT  TD_VC_003,         
@ISCO_OPRC_CNTB  TD_VC_003,            
@ISNU_ASTO       TD_VC_010,            
---@ISCO_USUA       TD_VC_008,            
@INNU_SIZE       TD_IN_001,        
@IDFE_ASTO_CNTB  TD_DT_001,         
@ISTI_FILT       TD_VC_001, -- 'T' TODAS LAS UNID. 'P' FILTRO POR UNIDAD         
@ISTI_GENE_ASTO  TD_VC_003  -- 'ING'  UNIDAD INGRESADA 'ORI' UNIDAD ORIGEN        
As    
Declare            
  @CSCO_CNTA_EMPR       TD_VC_020_CNTA,            
  @CSCO_UNID_CNTB       TD_VC_003,            
  @VSCO_UNID_CNTB       TD_VC_003,            
  @VNTO_CARG_MESE       TD_NU_016_004,            
  @VNTO_ABON_MESE       TD_NU_016_004,            
  @CSTI_MONE            TD_VC_003,             
  @VSTI_OPER            TD_VC_003,            
  @VNNU_SECU            TD_IN_002,            
  @VNIM_MVTO_CNTB       TD_NU_016_004,            
  @VNIM_MVTO_ORIG       TD_NU_016_004,            
  @CNIM_MVTO_CNTB       TD_NU_016_004,            
  @CNIM_MVTO_ORIG       TD_NU_016_004,            
  @VNFA_CAMB            TD_NU_015_006,            
  @VSCO_MONE_CNTB       TD_VC_003,            
  @VSCO_UNID_ORIG       TD_VC_003,            
  @VSCO_UNID_EVAL       TD_VC_003            
        
-- EN UNID INGRESADA            
    
If @ISTI_GENE_ASTO = 'ING'        
 Begin         
 Declare CU_TXMVTO_CNTB_I11_1 cursor            
 For            
 Select NULL, T1.CO_CNTA_EMPR, MAX(T1.CO_MONE),             
 Isnull(Sum(Isnull(T2.IM_CARG_CNTB, 0)), 0) - Isnull(Sum(Isnull(T2.IM_ABON_CNTB, 0)), 0),            
 Isnull(Sum(Isnull(T2.IM_CARG_ORIG, 0)), 0) - Isnull(Sum(Isnull(T2.IM_ABON_ORIG, 0)), 0)            
 From   TMPLAN_EMPR T1, TASALD_EMPR T2            
 Where  T2.CO_EMPR = @ISCO_EMPR          
 And T2.NU_CNTB_EMPR = @INNU_CNTB_EMPR          
 And ((@ISTI_FILT = 'T') Or (@ISTI_FILT = 'P' And t2.CO_UNID_CNTB = @ISCO_UNID_FILT))        
 And T2.NU_ANNO      = @INNU_ANNO_CIER          
 And T2.NU_MESE     <= @INNU_MESE_CIER          
 And Substring(T1.CO_CNTA_EMPR,1,1) < '6'         
 And DataLength(Rtrim(T1.CO_CNTA_EMPR)) = @INNU_SIZE         
 And T1.ST_CNTA_CTES = 'CTA'          
 And T1.NU_ANNO = 9999          
 And T2.CO_EMPR = T1.CO_EMPR         
 And T2.CO_CNTA_EMPR = T1.CO_CNTA_EMPR         
 And T2.TI_AUXI_EMPR IS NULL         
 And T2.CO_AUXI_EMPR IS NULL         
 And T2.CO_ORDE_SERV IS NULL            
GROUP BY T1.CO_CNTA_EMPR            
ORDER BY T1.CO_CNTA_EMPR            
 End         
        
--- ORIGEN         
If @ISTI_GENE_ASTO = 'ORI'        
 Begin         
 Declare CU_TXMVTO_CNTB_I11_1 cursor            
 For            
 Select t2.CO_UNID_CNTB, T1.CO_CNTA_EMPR, MAX(T1.CO_MONE),             
 Isnull(Sum(Isnull(T2.IM_CARG_CNTB, 0)), 0) - Isnull(Sum(Isnull(T2.IM_ABON_CNTB, 0)), 0),            
 Isnull(Sum(Isnull(T2.IM_CARG_ORIG, 0)), 0) - Isnull(Sum(Isnull(T2.IM_ABON_ORIG, 0)), 0)            
 From   TMPLAN_EMPR T1, TASALD_EMPR T2            
 Where  T2.CO_EMPR = @ISCO_EMPR          
 And T2.NU_CNTB_EMPR = @INNU_CNTB_EMPR          
 And  ((@ISTI_FILT = 'T') Or (@ISTI_FILT = 'P' And t2.CO_UNID_CNTB = @ISCO_UNID_FILT))        
 And T2.NU_ANNO = @INNU_ANNO_CIER          
 And T2.NU_MESE <= @INNU_MESE_CIER          
 And Substring(T1.CO_CNTA_EMPR,1,1) < '6'         
 And DataLength(Rtrim(T1.CO_CNTA_EMPR)) = @INNU_SIZE         
 And T1.ST_CNTA_CTES = 'CTA'          
 And T1.NU_ANNO = 9999          
 And T2.CO_EMPR = T1.CO_EMPR         
 And T2.CO_CNTA_EMPR = T1.CO_CNTA_EMPR         
 And T2.TI_AUXI_EMPR IS NULL         
 And T2.CO_AUXI_EMPR IS NULL         
 And T2.CO_ORDE_SERV IS NULL            
GROUP BY t2.CO_UNID_CNTB, T1.CO_CNTA_EMPR            
ORDER BY t2.CO_UNID_CNTB, T1.CO_CNTA_EMPR            
 End         
    
If @ISTI_GENE_ASTO = 'ING'             
 Begin    
 Delete From TXMVTO_CNTB            
 Where CO_EMPR = @ISCO_EMPR     
 And NU_CNTB_EMPR = @INNU_CNTB_EMPR     
-- And CO_UNID_CNTB = @ISCO_UNID_CNTB     
 And CO_OPRC_CNTB = @ISCO_OPRC_CNTB     
 And NU_ANNO      = @INNU_ANNO_APER     
 And NU_MESE      = @INNU_MESE_APER            
 End     
If @ISTI_GENE_ASTO = 'ORI'             
 Begin     
 Delete From TXMVTO_CNTB            
 Where CO_EMPR = @ISCO_EMPR     
 And NU_CNTB_EMPR = @INNU_CNTB_EMPR    
 And CO_OPRC_CNTB = @ISCO_OPRC_CNTB     
 And NU_ANNO      = @INNU_ANNO_APER     
 And NU_MESE      = @INNU_MESE_APER     
 And ((@ISTI_FILT = 'T') Or (@ISTI_FILT = 'P' And CO_UNID_ORIG = @ISCO_UNID_FILT))           
  
If @ISTI_FILT = 'P'  
 Begin   
 Delete From TXMVTO_CNTB            
 Where CO_EMPR = @ISCO_EMPR       
 And NU_CNTB_EMPR = @INNU_CNTB_EMPR      
 And CO_OPRC_CNTB = @ISCO_OPRC_CNTB       
 And NU_ANNO      = @INNU_ANNO_APER    
 And NU_MESE      = @INNU_MESE_APER    
 And IsNull(CO_UNID_ORIG, '') = ''  
 End   
  
 End  
    
 -- ACTUALIZA CORRELATIVOS LUEGO DE DELETES  para todas las unidades   
 Exec SP_TTINTE_CNTB_U03 @ISCO_EMPR, @ISCO_USUA, @IDFE_USUA, @INNU_CNTB_EMPR, @INNU_ANNO_APER, @INNU_MESE_APER, @ISCO_OPRC_CNTB  
          
 Select @VSCO_MONE_CNTB = CO_MONE            
   from TTCNTB_EMPR            
  where CO_EMPR = @ISCO_EMPR            
    and NU_CNTB_EMPR = @INNU_CNTB_EMPR            
            
 Select @VNNU_SECU = 1         
 Select @VSCO_UNID_EVAL = NULL  
    
 If @ISTI_GENE_ASTO = 'ING'    
  Begin     
   Select @VSCO_UNID_ORIG = NULL    
  End     
            
 Open CU_TXMVTO_CNTB_I11_1            
 Fetch CU_TXMVTO_CNTB_I11_1 Into @CSCO_UNID_CNTB,       
 @CSCO_CNTA_EMPR, @CSTI_MONE, @CNIM_MVTO_CNTB, @CNIM_MVTO_ORIG            
             
 While @@Fetch_status = 0            
  Begin        
   
    Select @VNIM_MVTO_CNTB = @CNIM_MVTO_CNTB            
    Select @VNIM_MVTO_ORIG = @CNIM_MVTO_ORIG            
      
    --- SI INGRESA UNA UNIDAD DONDE GRABAR ASTO    
    If IsNull(Rtrim(@ISCO_UNID_CNTB), '') != ''    
      Begin       
       Select @VSCO_UNID_CNTB = @ISCO_UNID_CNTB      
      End       
    Else       
      Begin       
       Select @VSCO_UNID_CNTB = @CSCO_UNID_CNTB      
      End       
    
    --- SETEA UNIDAD ORIGEN    
    If @ISTI_GENE_ASTO = 'ORI'        
      Begin         
         Select @VSCO_UNID_ORIG = @CSCO_UNID_CNTB       
  
         If @VSCO_UNID_EVAL IS NULL Or @CSCO_UNID_CNTB != @VSCO_UNID_EVAL  
         Begin   
         Select @VNNU_SECU = IsNull(Max(NU_SECU), 0) + 1    
         From TXMVTO_CNTB     
         Where CO_EMPR = @ISCO_EMPR     
         And NU_CNTB_EMPR = @INNU_CNTB_EMPR     
         And CO_UNID_CNTB = @CSCO_UNID_CNTB     
         And CO_OPRC_CNTB = @ISCO_OPRC_CNTB     
         And NU_ANNO = @INNU_ANNO_APER     
         And NU_MESE = @INNU_MESE_APER            
  
         Select @VSCO_UNID_EVAL = @CSCO_UNID_CNTB  
         End   
  
      End     
    
            
    If @VNIM_MVTO_CNTB IS NULL            
       Select @VNIM_MVTO_CNTB = 0.00             
    If @VNIM_MVTO_ORIG IS NULL                 
       Select @VNIM_MVTO_ORIG  = 0.00            
            
    If @VNIM_MVTO_ORIG != 0.00 or @VNIM_MVTO_CNTB != 0.00            
     Begin            
      If @CSTI_MONE != @VSCO_MONE_CNTB            
       Begin                
        If @VNIM_MVTO_ORIG != 0.00            
         Select @VNFA_CAMB = ROUND(@VNIM_MVTO_CNTB / @VNIM_MVTO_ORIG,3)            
        Else            
         Begin            
           Select @VNFA_CAMB = 1.00            
         End            
       End            
      Else            
       Begin            
        Select @VNFA_CAMB = 1.00                         
        Select @VNIM_MVTO_ORIG = @VNIM_MVTO_CNTB            
       End            
             
     If @VNIM_MVTO_ORIG > 0.00            
         If @VNIM_MVTO_CNTB > 0.00            
            Select @VSTI_OPER = 'CAR'  /*--- Si es positivo se debe poner negativo ---*/          
         ELSE            
            Select @VSTI_OPER = 'ABO'  /*--- Si es negativo se debe poner positivo ---*/            
     Else            
         If @VNIM_MVTO_CNTB <  0.00            
             Select @VSTI_OPER = 'ABO'  /*--- Si es negativo se debe poner positivo ---*/            
         ELSE            
             Select @VSTI_OPER = 'CAR'  /*--- Si es positivo se debe poner negativo ---*/            
            
     Insert Into TXMVTO_CNTB            
     (CO_EMPR,NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO,            
      NU_MESE,NU_ASTO,NU_SECU,FE_ASTO_CNTB,CO_CNTA_EMPR,TI_AUXI_EMPR,            
      CO_AUXI_EMPR,TI_DOCU,NU_DOCU,FE_DOCU,FE_DOCU_VENC,TI_CAMB,CO_MONE,FA_CAMB,FA_CAMB_DIAR,            
      TI_OPER,IM_MVTO_ORIG,IM_MVTO_CNTB,DE_GLOS,TI_DOCU_REFE,NU_DOCU_REFE,FE_DOCU_REFE,            
      NO_GIRA,CO_ORDE_SERV,SI_MVTO_CNTB,CO_UNID_ORIG,            
      CO_OPRC_ORIG,NU_ASTO_ORIG,ST_OTRS,ST_GEST, ST_REDO,CO_USUA_MODI, FE_USUA_MODI, CO_USUA_CREA, FE_USUA_CREA )            
     Values            
     (@ISCO_EMPR, @INNU_CNTB_EMPR, @VSCO_UNID_CNTB, @ISCO_OPRC_CNTB,             
      @INNU_ANNO_APER, @INNU_MESE_APER, @ISNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB,             
      @CSCO_CNTA_EMPR, NULL, NULL, NULL, NULL, NULL, NULL, 'PAC', @CSTI_MONE,             
      Abs(@VNFA_CAMB), Abs(@VNFA_CAMB), @VSTI_OPER, Abs(@VNIM_MVTO_ORIG),             
      Abs(@VNIM_MVTO_CNTB), 'ASIENTO DE APERTURA',             
      NULL, NULL, NULL, NULL, NULL, 'APR',     
      --@ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @ISNU_ASTO,     
      @VSCO_UNID_ORIG, NULL, NULL,     
      NULL, 'N', 'N', @ISCO_USUA, @IDFE_USUA, @ISCO_USUA, @IDFE_USUA )            
     /*--- Incrementa el contador de registros ---*/            
     Select @VNNU_SECU = @VNNU_SECU + 1            
    End            
  Fetch CU_TXMVTO_CNTB_I11_1 Into @CSCO_UNID_CNTB,       
  @CSCO_CNTA_EMPR, @CSTI_MONE, @CNIM_MVTO_CNTB, @CNIM_MVTO_ORIG            
 End            
 Close CU_TXMVTO_CNTB_I11_1            
 Deallocate CU_TXMVTO_CNTB_I11_1            
            
/* If @VNNU_SECU > 1            
   Update TCFECH_PROC            
   Set NU_ULTI_ASTO = Convert(Int, @ISNU_ASTO)            
   Where CO_EMPR      = @ISCO_EMPR            
   And NU_CNTB_EMPR = @INNU_CNTB_EMPR            
   And CO_UNID_CNTB = @ISCO_UNID_CNTB            
   And CO_OPRC_CNTB = @ISCO_OPRC_CNTB            
   And NU_ANNO      = @INNU_ANNO_APER            
   And NU_MESE      = @INNU_MESE_APER          */  
  
             
 Exec SP_TXMVTO_CNTB_I12 @ISCO_EMPR, @ISCO_USUA, @IDFE_USUA, @INNU_CNTB_EMPR, @INNU_ANNO_CIER, @INNU_MESE_CIER,             
     @INNU_ANNO_APER, @INNU_MESE_APER, @ISCO_UNID_CNTB, @ISCO_UNID_FILT, @ISCO_OPRC_CNTB,             
     @ISNU_ASTO, @VNNU_SECU, @INNU_SIZE, @IDFE_ASTO_CNTB, @ISTI_FILT, @ISTI_GENE_ASTO        
  
 -- ACTUALIZA CORRELATIVOS LUEGO DE inserts para todas las unidades   
 Exec SP_TTINTE_CNTB_U03 @ISCO_EMPR, @ISCO_USUA, @IDFE_USUA, @INNU_CNTB_EMPR, @INNU_ANNO_APER, @INNU_MESE_APER, @ISCO_OPRC_CNTB  
  
 Return            
/*--------------------------------- Fin ---------------------------------*/            
          
  
  
  
GO
